home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / daydreambbs114.lha / Developer / DreamNew.S < prev    next >
Text File  |  1995-06-28  |  18KB  |  995 lines

  1. ;DreamNew - Example how to code doors for DayDream BBS in assembler.
  2. ;Source is old and lame, but it works.
  3.  
  4.     incdir  "dh1:code/include/"
  5.     include    "lvo3.0/dos_lib.i"
  6.     include    "lvo3.0/exec_lib.i"
  7.     include "dos/dos.i"
  8.     include "dos/dostags.i"
  9.     include    "exec/ports.i"
  10.     include    "dos/datetime.i"
  11.  
  12.     STRUCTURE    Globals,0
  13.     ULONG        cmdlin
  14.     ULONG        Buffer
  15.     ULONG        DoorPort
  16.     ULONG        ReplyPort
  17.     ULONG        Message
  18.     ULONG        DosBase
  19.     ULONG        UserInfo
  20.     ULONG        ConfDat
  21.     ULONG        DayDreamDat
  22.     ULONG        CConfDat
  23.     ULONG        ConfAddr
  24.     ULONG        Userlength
  25.     ULONG        Messagelength
  26.     ULONG        Baselength
  27.     ULONG        Conflength
  28.     ULONG        DObject
  29.     ULONG        DLock
  30.     ULONG        ConfigSize
  31.     ULONG        ConfigMem
  32.     ULONG        Dirmem
  33.     ULONG        Dirsize
  34.     ULONG        Pospointer1
  35.     ULONG        Pospointer2
  36.     ULONG        Screenlength
  37.     ULONG        FFilesize
  38.     ULONG        Date
  39.     ULONG        Ds1
  40.     ULONG        Ds2
  41.     ULONG        Ds3
  42.     UBYTE        DSFormat
  43.     UBYTE        DSFlags
  44.     ULONG        DayPtr
  45.     ULONG        DatePtr
  46.     ULONG        TimePtr
  47.     UWORD        Lbfmode
  48.     UWORD        Exitmode
  49.     STRUCT        CfgPath,80
  50.     STRUCT        DirName,60
  51.     STRUCT        DoorPortName,20
  52.     STRUCT        Namea,16
  53.     STRUCT        Flagsa,16
  54.     STRUCT        Sizea,16
  55.     STRUCT        Datea,16
  56.     STRUCT        Desca,16
  57.     STRUCT        Lbf,120
  58.     STRUCT        Doorcommand,80
  59.     STRUCT        FFilename,20
  60.     STRUCT        FFilepath,80
  61.     STRUCT        DateStr,40
  62.     STRUCT        Flagstring,80
  63.     LABEL        Memsize
  64.  
  65.         Move.L    A0,A4        ;Take commandline parameters
  66.         Move.L    D0,D4
  67.  
  68.         Move.L    $4.W,A6
  69.         Move.L    #Memsize+4096,D0
  70.         Move.L    #$10001,D1
  71.         Jsr    _LVOAllocMem(A6) ;Allocate memory for variables
  72.         Move.L    D0,A5         ;and buffer
  73.         Tst.L    D0
  74.         Beq    CleanUp
  75.         Add.L    #Memsize,D0
  76.         Move.L    D0,Buffer(A5)
  77.         Add.L    #4096,D0
  78.  
  79.         Clr.B    -1(A4,D4.L)
  80.         Move.L    A4,cmdlin(A5)
  81.  
  82.         Lea    Portname(PC),A0
  83.         Lea    DoorPortName(A5),A1
  84. CopyPort1    Move.B    (A0)+,(A1)+
  85.         Tst.B    (A0)
  86.         Bne    CopyPort1
  87. CopyPort2    Move.B    (A4)+,(A1)+
  88.         Bne    CopyPort2
  89.  
  90.         Lea    DosName(PC),A1
  91.         Moveq    #0,D0
  92.         Jsr    _LVOOpenLibrary(A6)
  93.         Move.L    D0,DosBase(A5)
  94.         Beq    CleanUp
  95.  
  96.         Move.L    DosBase(A5),A6
  97.  
  98.         Lea    VerName(PC),A0        ;Load structuresizes from
  99.         Move.L    A0,D1            ;Version.DAT
  100.         Move.L    #MODE_OLDFILE,D2
  101.         Jsr    _LVOOpen(A6)
  102.         Move.L    D0,D4
  103.         Beq    Exit
  104.         Move.L    D0,D1
  105.         Move.L    Buffer(A5),D2
  106.         Moveq    #100,D3
  107.         Jsr    _LVORead(A6)
  108.         Move.L    D4,D1
  109.         Jsr    _LVOClose(A6)
  110.  
  111.         Move.L    Buffer(A5),A0
  112.         Moveq    #0,D0
  113.         Move.W    40(A0),D0
  114.         Move.L    D0,Userlength(A5)
  115.         Move.W    52(A0),D0
  116.         Move.L    D0,Messagelength(A5)
  117.         Move.W    38(A0),D0
  118.         Move.L    D0,Baselength(A5)
  119.         Move.W    36(A0),D0
  120.         Move.L    D0,Conflength(A5)
  121.  
  122.         Move.L    #DOS_FIB,D1
  123.         Moveq    #0,D2
  124.         Jsr    _LVOAllocDosObject(A6)
  125.         Move.L    D0,DObject(A5)
  126.  
  127.         Move.L    $4.W,A6
  128.         Lea    DoorPortName(A5),A1    ;Check if doorport exists
  129.         Jsr    _LVOFindPort(A6)
  130.         Move.L    D0,DoorPort(A5)
  131.         Bne    Portfound
  132.  
  133.         Lea    Noporttxt(PC),A0    ;No, runned from cli -> exit
  134.         Move.L    A5,D0
  135.         Add.L    #DoorPortName,D0
  136.         Bsr    DpyMsg
  137.         Bra    CleanUp
  138.  
  139. Portfound    Move.L    #MN_SIZE+100,D0
  140.         Move.L    #$10001,D1
  141.         Jsr    _LVOAllocMem(A6)
  142.         Move.L    D0,Message(A5)
  143.         Beq    CleanUp
  144.  
  145.         Jsr    _LVOCreateMsgPort(A6)    ;Create port for replies
  146.         Move.L    D0,ReplyPort(A5)
  147.         Beq    CleanUp
  148.  
  149.         Move.L    Message(A5),A0        ;Initialize doormsg
  150.         Move.L    D0,MN_REPLYPORT(A0)
  151.         Move.W    #MN_SIZE+100,MN_LENGTH(A0)
  152.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  153.         Add.L    #MN_SIZE,A0
  154.         Move.W     #1,(A0)
  155.         Lea    Banner(PC),A1        ;Tell user that he's using
  156.         Move.L    A1,2(A0)        ;DreamNew!
  157.         Bsr    SendMsg
  158.  
  159.         Lea    EnvName(PC),A0        ;Get path for configfile
  160.         Move.L    A0,D1
  161.         Move.L    #MODE_OLDFILE,D2
  162.         Move.L    DosBase(A5),A6
  163.         Jsr    _LVOOpen(A6)
  164.         Move.L    D0,D4
  165.         Beq    Exit
  166.         Move.L    D0,D1
  167.         Move.L    Buffer(A5),D2
  168.         Move.L    #80,D3
  169.         Jsr    _LVORead(A6)
  170.         Move.L    D0,D3
  171.         Move.L    D4,D1
  172.         Jsr    _LVOClose(A6)
  173.  
  174.         Move.L    Buffer(A5),A0
  175.         Add.L    D3,A0
  176.         Move.B    #0,(A0)
  177.  
  178.         Move.L    Buffer(A5),A0
  179.         Move.L    A5,A1
  180.         Add.L    #CfgPath,A1
  181. CFGPathcopy2    Move.B    (A0)+,(A1)+
  182.         Bne    CFGPathcopy2
  183.         Sub.L    #1,A1
  184.  
  185.         Lea    ConfigName(PC),A0
  186. CFGPathcopy1    Move.B    (A0)+,(A1)+
  187.         Bne    CFGPathcopy1
  188.  
  189. Conffig        Move.L    DosBase(A5),A6
  190.         Move.L    A5,D1
  191.         Add.L    #CfgPath,D1
  192.         Move.L    #ACCESS_READ,D2
  193.         Jsr    _LVOLock(A6)
  194.         Move.L    D0,DLock(A5)
  195.         Beq    Exit
  196.  
  197. ConfigFound    Move.L    D0,D1
  198.         Move.L    DObject(A5),D2
  199.         Jsr    _LVOExamine(A6)
  200.         
  201.         Move.L    DObject(A5),A2
  202.         Move.L    fib_Size(A2),ConfigSize(A5)
  203.  
  204.         Move.L    DLock(A5),D1
  205.         Jsr    _LVOUnLock(A6)
  206.  
  207.         Move.L    ConfigSize(A5),D0
  208.         Addq.L    #2,D0
  209.         Move.L    #$10001,D1
  210.         Move.L    $4.W,A6
  211.         Jsr    _LVOAllocMem(A6)
  212.         Move.L    D0,ConfigMem(A5)
  213.         Beq    Exit
  214.  
  215.         Move.L    A5,D1
  216.         Add.L    #CfgPath,D1
  217.  
  218.         Move.L    #MODE_OLDFILE,D2    ;Read configfile
  219.         Move.L    DosBase(A5),A6
  220.         Jsr    _LVOOpen(A6)
  221.         Move.L    D0,D4
  222.         Beq    Exit
  223.         Move.L    D0,D1
  224.         Move.L    ConfigMem(A5),D2
  225.         Move.L    ConfigSize(A5),D3
  226.         Jsr    _LVORead(A6)
  227.         Move.L    D4,D1
  228.         Jsr    _LVOClose(A6)
  229.  
  230.         Lea    Nameind(PC),A1
  231.         Bsr    ExamineCfg
  232.         Tst.L    D0
  233.         Beq    Exit
  234.         Move.L    D0,A0
  235.         Lea    Namea(A5),A1
  236. CPYNamea    Cmp.B    #'"',(A0)
  237.         Beq    NomCPYNamea
  238.         Move.B    (A0)+,(A1)+
  239.         Bne    CPYNamea
  240.  
  241. NomCPYNamea    Lea    Flagsind(PC),A1
  242.         Bsr    ExamineCfg
  243.         Tst.L    D0
  244.         Beq    Exit
  245.         Move.L    D0,A0
  246.         Lea    Flagsa(A5),A1
  247. CPYFlagsa    Cmp.B    #'"',(A0)
  248.         Beq    NomCPYFlagsa
  249.         Move.B    (A0)+,(A1)+
  250.         Bne    CPYFlagsa
  251.  
  252. NomCPYFlagsa    Lea    Sizeind(PC),A1
  253.         Bsr    ExamineCfg
  254.         Tst.L    D0
  255.         Beq    Exit
  256.         Move.L    D0,A0
  257.         Lea    Sizea(A5),A1
  258. CPYSizea    Cmp.B    #'"',(A0)
  259.         Beq    NomCPYSizea
  260.         Move.B    (A0)+,(A1)+
  261.         Bne    CPYSizea
  262.  
  263. NomCPYSizea    Lea    Dateind(PC),A1
  264.         Bsr    ExamineCfg
  265.         Tst.L    D0
  266.         Beq    Exit
  267.         Move.L    D0,A0
  268.         Lea    Datea(A5),A1
  269. CPYDatea    Cmp.B    #'"',(A0)
  270.         Beq    NomCPYDatea
  271.         Move.B    (A0)+,(A1)+
  272.         Bne    CPYDatea
  273.  
  274. NomCPYDatea    Lea    Descind(PC),A1
  275.         Bsr    ExamineCfg
  276.         Tst.L    D0
  277.         Beq    Exit
  278.         Move.L    D0,A0
  279.         Lea    Desca(A5),A1
  280. CPYDesca    Cmp.B    #'"',(A0)
  281.         Beq    NomCPYDesca
  282.         Move.B    (A0)+,(A1)+
  283.         Bne    CPYDesca
  284.  
  285. NomCPYDesca    Lea    Lbfind(PC),A1
  286.         Bsr    ExamineCfg
  287.         Tst.L    D0
  288.         Beq    Nomlbf2
  289.         Move.L    D0,A0
  290.         Lea    Lbf(A5),A1
  291. CPYlbf        Cmp.B    #'"',(A0)
  292.         Beq    Nomlbf
  293.         Move.B    (A0)+,(A1)+
  294.         Bne    CPYlbf
  295. Nomlbf        Move.B    #10,(A1)
  296. Nomlbf2
  297.         Move.L    Message(A5),A0        ;Get information from
  298.         Move.B    #NT_MESSAGE,LN_TYPE(A0) ;DayDream
  299.         Add.L    #MN_SIZE,A0
  300.         Move.W     #3,(A0)
  301.         Bsr    SendMsg
  302.         Move.L    Message(A5),A0
  303.         Add.L    #MN_SIZE,A0
  304.         Move.L    6(A0),Date(A5)
  305.         Move.L    82(A0),UserInfo(A5)
  306.         Move.L    46(A0),DayDreamDat(A5)
  307.         Move.L    58(A0),ConfDat(A5)
  308.         Move.L    62(A0),CConfDat(A5)
  309.         Move.L    94(A0),A4
  310.  
  311.         Move.L    Date(A5),D0
  312.         Lsr.L    #7,D0
  313.         Divu    #675,D0
  314.         And.L    #$0000FFFF,D0
  315.         Move.L    D0,Date(A5)
  316.  
  317.         Cmp.l    #0,A4
  318.         Beq    NoParams
  319.  
  320.         Tst.B    (A4)
  321.         Beq    NoParams
  322.  
  323.         Move.L    A4,A0
  324.         Bsr    Convnumb
  325.         Move.L    D0,D1
  326.         Bra    GoTro
  327.  
  328. NoParams    Moveq    #0,D1
  329.         Move.L    CConfDat(A5),A0
  330.         Move.B    82(A0),D1
  331.  
  332. GoTro        Move.L    CConfDat(A5),D0
  333.         Add.L    #41,D0
  334.  
  335.         Lea    DirectoryName(PC),A0
  336.         Bsr    FmtStr
  337.  
  338.         Move.L    Buffer(A5),A0
  339.         Lea    DirName(A5),A1
  340. CPDNM        Move.B    (A0)+,(A1)+
  341.         Bne    CPDNM
  342.  
  343.         Move.L    Buffer(A5),D1
  344.         Moveq    #ACCESS_READ,D2
  345.         Move.L    DosBase(A5),A6
  346.         Jsr    _LVOLock(A6)
  347.         Move.L    D0,D5
  348.         Beq    Exit
  349.         Move.L    D0,D1
  350.         Move.L    DObject(A5),D2
  351.         Jsr    _LVOExamine(A6)
  352.         Move.L    DObject(A5),A2
  353.         Move.L    fib_Size(A2),Dirsize(A5)
  354.         Move.L    D5,D1
  355.         Jsr    _LVOUnLock(A6)
  356.  
  357.         Move.L    $4.W,A6            ;Allocate memory for catalog
  358.         Move.L    Dirsize(A5),D0
  359.         Add.L    #4,D0
  360.         Move.L    #$10001,D1
  361.         Jsr    _LVOAllocMem(A6)
  362.         Move.L    D0,Dirmem(A5)
  363.         Beq    Exit
  364.  
  365.         Move.L    A5,D1            ;Read it
  366.         Add.L    #DirName,D1
  367.         Move.L    #MODE_OLDFILE,D2
  368.         Move.L    DosBase(A5),A6
  369.         Jsr    _LVOOpen(A6)
  370.         Move.L    D0,D4
  371.         Beq    Exit
  372.         Move.L    D0,D1
  373.         Move.L    Dirmem(A5),D2
  374.         Add.L    #2,D2
  375.         Move.L    Dirsize(A5),D3
  376.         Jsr    _LVORead(A6)
  377.         Move.L    D4,D1
  378.         Jsr    _LVOClose(A6)
  379.  
  380.         Move.L    UserInfo(A5),A0        ;Get user's screenlength
  381.         Moveq    #0,D0
  382.         Move.B    136(A0),D0
  383.         Move.L    D0,Screenlength(A5)
  384.  
  385.         Move.L    Dirmem(A5),A1
  386.         Add.L    Dirsize(A5),A1
  387.         Move.B    #0,1(A1)
  388.         Move.L    A1,Pospointer2(A5)
  389.  
  390.         Move.L    Screenlength(A5),D4
  391.         Subq.L    #1,D4
  392. Skuismee    Moveq    #0,D5
  393.  
  394. GetPrevfile1    Tst.B    -(A1)
  395.         Beq    ExitOn
  396.         Cmp.B    #10,(A1)
  397.         Bne    GetPrevfile1
  398. Slekepoo    Add.L    #1,D5
  399.         Move.B    #0,(A1)
  400.         Cmp.B    #' ',1(A1)
  401.         Beq    GetPrevfile1
  402.         Move.L    A1,Pospointer2(A5)
  403.         Add.L    #1,A1
  404.  
  405. Skuismee2    Tst.L    D5
  406.         Beq    Skuismeeend
  407.         Bsr    Showline
  408.  
  409. Nextlineof    Tst.B    (A1)+
  410.         Bne    Nextlineof
  411.  
  412.         Sub.L    #1,D4
  413.         Tst.L    D4
  414.         Beq    Prompt
  415.  
  416.         DBra    D5,Skuismee2
  417.         
  418. Skuismeeend    Tst.B    Lbf(A5)
  419.         Beq    Nolbf
  420.  
  421.         Tst.W    Lbfmode(A5)
  422.         Bne    Nolbf
  423.  
  424.         Move.W    #1,Lbfmode(A5)
  425.  
  426.         Lea    Lbf(A5),A1
  427.         Bsr    SendTxt
  428.  
  429.         Sub.L    #1,D4
  430.         Tst    D4
  431.         Beq    Prompt
  432.  
  433. Nolbf        Tst.W    Exitmode(A5)
  434.         Bne    Exit
  435.  
  436.         Move.L    Pospointer2(A5),A1
  437.         Bra    Skuismee
  438.  
  439. Prompt        Move.L    A1,Pospointer1(A5)
  440.         Tst.L    D5
  441.         Beq    Skiptro2
  442.  
  443.         Sub.L    #1,D5
  444.  
  445. Skiptro2    Lea    Moreprompttxt(PC),A1
  446.         Bsr    SendTxt
  447.  
  448. Getkey        Move.L    Message(A5),A0        ;Wait for hotkey
  449.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  450.         Add.L    #MN_SIZE,A0
  451.         Move.W     #11,(A0)
  452.         Move.L    #0,2(A0)
  453.         Move.L    #0,6(A0)
  454.         Move.L    #0,10(A0)
  455.         Bsr    SendMsg
  456.  
  457.         Move.L    Message(A5),A0
  458.         Add.L    #MN_SIZE,A0
  459.         Moveq    #0,D0
  460.         Move.B    (A0),D0
  461.     
  462.         Tst.B    D0
  463.         Beq    Exit
  464.  
  465.         Cmp.B    #'a',D0
  466.         Bcs    UC_Belowtro
  467.         Cmp.B    #'z',D0
  468.         Bhi    UC_Belowtro
  469.         Sub.B    #32,D0
  470. UC_Belowtro    Cmp.B    #224,D0
  471.         Bcs    UC_Nospecialtro
  472.         Sub.B    #32,D0
  473. UC_Nospecialtro    
  474.  
  475.         Cmp.B    #'Q',D0
  476.         Beq    Exit
  477.         Cmp.B    #'?',D0
  478.         Beq    ShowHelp
  479.         Cmp.B    #13,D0
  480.         Beq    Adv1line
  481.         Cmp.B    #' ',D0
  482.         Beq    Advpage
  483.         Cmp.B    #'1',D0
  484.         Beq    Adv1line
  485.         Cmp.B    #'2',D0
  486.         Beq    Adv2lines
  487.         Cmp.B    #'3',D0
  488.         Beq    Adv3lines
  489.         Cmp.B    #'4',D0
  490.         Beq    Adv4lines
  491.         Cmp.B    #'5',D0
  492.         Beq    Adv5lines
  493.         Cmp.B    #'6',D0
  494.         Beq    Adv6lines
  495.         Cmp.B    #'7',D0
  496.         Beq    Adv7lines
  497.         Cmp.B    #'8',D0
  498.         Beq    Adv8lines
  499.         Cmp.B    #'9',D0
  500.         Beq    Adv9lines
  501.         Cmp.B    #'I',D0
  502.         Beq    Clrscr
  503.         Cmp.B    #'C',D0
  504.         Beq    Continuous
  505.         Cmp.B    #'F',D0
  506.         Beq    FlagFile
  507.         Move.B    D0,D2
  508.  
  509.         Lea    Externind(PC),A1
  510.         Bsr    ExamineCfg
  511.         Tst.L    D0
  512.         Beq    Getkey
  513.         Addq.L    #1,D0
  514.         Move.L    D0,A0
  515.  
  516. Skilipiy    Cmp.B    #'~',(A0)
  517.         Beq    Getkey
  518.         Move.B    (A0),D0
  519.         Cmp.B    D2,D0
  520.         Beq    Matchf
  521.  
  522. Nextcfgline    Cmp.B    #10,(A0)+
  523.         Bne    Nextcfgline
  524.         Bra    Skilipiy
  525.  
  526. Matchf        Add.l    #2,A0
  527.  
  528.         Lea    Doorcommand(A5),A1
  529. CPY_DCommand    Cmp.B    #10,(A0)
  530.         Beq    CPY_DCommande
  531.         Move.B    (A0)+,(A1)+
  532.         Bra    CPY_DCommand
  533.  
  534. CPY_DCommande    Move.B    #0,(A1)+
  535.         Move.L    Message(A5),A0
  536.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  537.         Add.L    #MN_SIZE,A0
  538.         Move.W     #15,(A0)
  539.         Lea    Doorcommand(A5),A1
  540.         Move.L    A1,2(A0)
  541.         Bsr    SendMsg
  542.     
  543.         Bra    Skiptro2
  544.  
  545. Exit        Lea    Skilipoo(PC),A1
  546.         Bsr    SendTxt
  547.         
  548.         Move.L    4.W,A6
  549.         Move.L    Message(A5),A0
  550.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  551.         Add.L    #MN_SIZE,A0
  552.         Move.W     #0,(A0)
  553.         Bsr    SendMsg
  554.  
  555. CleanUp        Tst.L    DObject(A5)
  556.         Beq    NoDObject
  557.         Move.L    DosBase(A5),A6
  558.         Move.L    #DOS_FIB,D1
  559.         Move.L    DObject(A5),D2
  560.         Jsr    _LVOFreeDosObject(A6)
  561.  
  562. NoDObject    Move.L    $4.W,A6
  563.         Tst.L    DosBase(A5)
  564.         Beq    Nodos
  565.         Move.L    DosBase(A5),A1
  566.         Jsr    _LVOCloseLibrary(A6)
  567. Nodos        Tst.L    Message(A5)
  568.         Beq    NoMessage
  569.         Move.L    Message(A5),A1
  570.         Move.L    #MN_SIZE+100,D0
  571.         Jsr    _LVOFreeMem(A6)
  572. NoMessage    Tst.L    Dirmem(A5)
  573.         Beq    NoDir
  574.         Move.L    Dirmem(A5),A1
  575.         Move.L    Dirsize(A5),D0
  576.         Add.L    #4,D0
  577.         Jsr    _LVOFreeMem(A6)
  578. NoDir        Tst.L    ConfigMem(A5)
  579.         Beq    NoConf
  580.         Move.L    ConfigMem(A5),A1
  581.         Move.L    ConfigSize(A5),D0
  582.         Add.L    #2,D0
  583.         Jsr    _LVOFreeMem(A6)
  584. NoConf        Tst    ReplyPort(A5)
  585.         Beq    NoReplyPort
  586.         Move.L    ReplyPort(A5),A0
  587.         Jsr    _LVODeleteMsgPort(A6)
  588. NoReplyPort    Tst.l    (A5)
  589.         Beq    Nothing
  590.         Move.L    A5,A1
  591.         Move.L    #Memsize+4096,D0
  592.         Jsr    _LVOFreeMem(A6)
  593. Nothing        Moveq    #0,D0
  594.         Rts
  595.  
  596. Showline    Movem.L    D0-D1/A0-A2,-(SP)
  597.         Move.L    Buffer(A5),A2
  598.         Move.W    #0,Lbfmode(A5)
  599.  
  600.         Cmp.B    #' ',(A1)
  601.         Beq    SL_Ansi5b
  602.  
  603.         Move.L    A1,A3
  604.         Lea    26(A1),A1
  605.  
  606.         Lea    DateStr(A5),A0
  607.         Move.B    (A1)+,(A0)+
  608.         Move.B    (A1)+,(A0)+
  609.         Move.B    #'-',(A0)+
  610.         Add.L    #1,A1
  611.         Move.B    (A1)+,(A0)+
  612.         Move.B    (A1)+,(A0)+
  613.         Move.B    #'-',(A0)+
  614.         Add.L    #1,A1
  615.         Move.B    (A1)+,(A0)+
  616.         Move.B    (A1)+,(A0)+
  617.         Move.B    #0,(A0)
  618.  
  619.         Move.B    #FORMAT_CDN,DSFormat(A5)
  620.         Move.B    #0,DSFlags(A5)
  621.         Lea    DateStr(A5),A0
  622.         Move.L    A0,DatePtr(A5)
  623.         Move.L    #0,TimePtr(A5)
  624.         Move.L    DosBase(A5),A6
  625.         Lea    Ds1(A5),A0
  626.         Move.L    A0,D1
  627.         Jsr    _LVOStrToDate(A6)
  628.  
  629.         Move.L    Date(A5),D0
  630.         Move.l    Ds1(A5),D1
  631.         Cmp.L    D0,D1
  632.         Blo    SL_NoNew
  633.  
  634.         Move.L    A3,A1
  635.         Lea    34(A1),A1
  636.         Move.B    #'*',(A1)
  637.  
  638. SL_NoNew    Move.L    A3,A1
  639.         Lea    Namea(A5),A0
  640. SL_Ansi1    Move.B    (A0)+,(A2)+
  641.         Bne    SL_Ansi1
  642.         Sub.L    #1,A2
  643.  
  644.         Moveq    #12,D0
  645. SL_Cpy1        Move.B    (A1)+,(A2)+
  646.         Dbra    D0,SL_Cpy1
  647.  
  648.         Lea    Flagsa(A5),A0
  649. SL_Ansi2    Move.B    (A0)+,(A2)+
  650.         Bne    SL_Ansi2
  651.         Sub.L    #1,A2
  652.  
  653.         Moveq    #4,D0
  654. SL_Cpy2        Move.B    (A1)+,(A2)+
  655.         Dbra    D0,SL_Cpy2
  656.  
  657.         Lea    Sizea(A5),A0
  658. SL_Ansi3    Move.B    (A0)+,(A2)+
  659.         Bne    SL_Ansi3
  660.         Sub.L    #1,A2
  661.  
  662.         Moveq    #7,D0
  663. SL_Cpy3        Move.B    (A1)+,(A2)+
  664.         Dbra    D0,SL_Cpy3
  665.  
  666.         Lea    Datea(A5),A0
  667. SL_Ansi4    Move.B    (A0)+,(A2)+
  668.         Bne    SL_Ansi4
  669.         Sub.L    #1,A2
  670.  
  671.         Moveq    #8,D0
  672. SL_Cpy4        Move.B    (A1)+,(A2)+
  673.         Dbra    D0,SL_Cpy4
  674.  
  675. SL_Ansi5b    Lea    Desca(A5),A0
  676. SL_Ansi5    Move.B    (A0)+,(A2)+
  677.         Bne    SL_Ansi5
  678.         Sub.L    #1,A2
  679.  
  680. SL_Cpy5        Move.B    (A1)+,(A2)+
  681.         Bne    SL_Cpy5
  682.  
  683.         Move.L    Buffer(A5),A1
  684.         Bsr    SendTxt
  685.  
  686.         Move.L    Buffer(A5),A1
  687.         Move.B    #10,(A1)
  688.         Move.B    #0,1(A1)
  689.         Bsr    SendTxt
  690.  
  691.         Movem.L    (SP)+,D0-D1/A0-A2
  692.         Rts
  693.  
  694. ShowHelp    Move.L    Message(A5),A0
  695.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  696.         Add.L    #MN_SIZE,A0
  697.         Move.W     #4,(A0)
  698.         Lea    Helpfilename(PC),A1
  699.         Move.L    A1,2(A0)
  700.         Move.L    #0,6(A0)
  701.         Moveq    #0,D0
  702.         Bset    #0,D0
  703.         Bset    #1,D0
  704.         Move.L    D0,10(A0)
  705.         Bsr    SendMsg
  706.         Bra    Prompt
  707.  
  708. Advpage        Moveq    #37,D0
  709.         Bsr    Clearprompt
  710.         Move.L    Pospointer1(A5),A1
  711.         Move.L    Screenlength(A5),D4
  712.         Subq.L    #1,D4
  713.         Bra    Skuismee2
  714. Adv1line    Moveq    #37,D0
  715.         Bsr    Clearprompt
  716.         Move.L    Pospointer1(A5),A1
  717.         Moveq    #1,D4
  718.         Bra    Skuismee2
  719. Adv2lines    Moveq    #37,D0
  720.         Bsr    Clearprompt
  721.         Move.L    Pospointer1(A5),A1
  722.         Moveq    #2,D4
  723.         Bra    Skuismee2
  724. Adv3lines    Moveq    #37,D0
  725.         Bsr    Clearprompt
  726.         Move.L    Pospointer1(A5),A1
  727.         Moveq    #3,D4
  728.         Bra    Skuismee2
  729. Adv4lines    Moveq    #37,D0
  730.         Bsr    Clearprompt
  731.         Move.L    Pospointer1(A5),A1
  732.         Moveq    #4,D4
  733.         Bra    Skuismee2
  734. Adv5lines    Moveq    #37,D0
  735.         Bsr    Clearprompt
  736.         Move.L    Pospointer1(A5),A1
  737.         Moveq    #5,D4
  738.         Bra    Skuismee2
  739. Adv6lines    Moveq    #37,D0
  740.         Bsr    Clearprompt
  741.         Move.L    Pospointer1(A5),A1
  742.         Moveq    #6,D4
  743.         Bra    Skuismee2
  744. Adv7lines    Moveq    #37,D0
  745.         Bsr    Clearprompt
  746.         Move.L    Pospointer1(A5),A1
  747.         Moveq    #7,D4
  748.         Bra    Skuismee2
  749. Adv8lines    Moveq    #37,D0
  750.         Bsr    Clearprompt
  751.         Move.L    Pospointer1(A5),A1
  752.         Moveq    #8,D4
  753.         Bra    Skuismee2
  754. Adv9lines    Moveq    #37,D0
  755.         Bsr    Clearprompt
  756.         Move.L    Pospointer1(A5),A1
  757.         Moveq    #9,D4
  758.         Bra    Skuismee2
  759. Clrscr        Moveq    #37,D0
  760.         Bsr    Clearprompt
  761.         Move.L    Buffer(A5),A0
  762.         Move.B    #12,(A0)
  763.         Move.B    #0,1(A0)
  764.  
  765.         Move.L    Buffer(A5),A1
  766.         Bsr    SendTxt
  767.  
  768.         Move.L    Pospointer1(A5),A1
  769.         Move.L    Screenlength(A5),D4
  770.         Subq.L    #1,D4
  771.         Bra    Skuismee2
  772. Continuous    Moveq    #37,D0
  773.         Bsr    Clearprompt
  774.         Move.L    Pospointer1(A5),A1
  775.         Moveq    #-1,D4
  776.         Bra    Skuismee2
  777.  
  778. Clearprompt    Move.L    Buffer(A5),A0
  779.         Move.B    #13,(A0)+
  780. CLP        Move.B    #' ',(A0)+
  781.         Dbra    D0,CLP
  782.         Move.B    #13,(A0)+
  783.         Move.B    #0,(A0)
  784.  
  785.         Move.L    Buffer(A5),A1
  786.         Bsr    SendTxt
  787.         Rts
  788.  
  789. ExitOn        Move.W    #1,Exitmode(A5)
  790.         Bra    Slekepoo
  791.  
  792. FlagFile    Moveq    #37,D0
  793.         Bsr    Clearprompt
  794.  
  795.         Lea    Fileflagtxt(PC),A1
  796.         Bsr    SendTxt
  797.  
  798.         Move.L    Buffer(A5),A0
  799.         Move.B    #0,512(A0)
  800.  
  801.         Move.L    Message(A5),A0
  802.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  803.         Add.L    #MN_SIZE,A0
  804.         Move.W     #2,(A0)
  805.         Move.L    Buffer(A5),2(A0)
  806.         Add.L    #512,2(A0)
  807.         Move.W    #70,6(A0)
  808.         Move.W    #%110,8(A0)
  809.         Bsr    SendMsg
  810.  
  811.         Move.L    Message(A5),A0
  812.         Tst.W    MN_SIZE(A0)
  813.         Beq    Exit
  814.         
  815.         Move.L    Buffer(A5),A0
  816.         Add.L    #512,A0
  817.         Tst.B    (A0)
  818.         Bne    Sodomit
  819.  
  820. FFQuit        Moveq    #37,D0
  821.         Bsr    Clearprompt
  822.         Bra    Skiptro2
  823.  
  824. Sodomit        Moveq    #80,D0
  825.         Move.l    A0,-(SP)
  826.         Bsr    Clearprompt
  827.         Move.l    (SP)+,A0
  828.  
  829. NoSkiptro2    Lea    Flagstring(A5),A1
  830.         Tst.B    (A0)
  831.         Beq    FFQuit
  832.  
  833. CPY_FString    Cmp.B    #' ',(A0)
  834.         Beq    .sodom
  835.         Move.B    (A0)+,(A1)+
  836.         Bne    CPY_FString
  837.         Move.L    #0,A4
  838.         Bra    .go
  839. .sodom        Move.B    #0,(A1)
  840.         Lea    1(A0),A4
  841.  
  842. .go        Move.L    CConfDat(A5),A0
  843.         Moveq    #0,D0
  844.         Move.B    (A0),D0
  845.  
  846.         Lea    FFilename(A5),A0
  847.         Move.B    #0,(A0)
  848.  
  849.         Move.L    Message(A5),A0
  850.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  851.         Add.L    #MN_SIZE,A0
  852.         Move.W     #12,(A0)
  853.         Move.L    D0,2(A0)
  854.         Lea    Flagstring(A5),A1
  855.         Move.L    A1,6(A0)
  856.         Move.L    #0,10(A0)
  857.         Move.L    A5,14(A0)
  858.         Bsr    SendMsg
  859.  
  860.         Cmp.L    #0,A4
  861.         Beq    Skiptro2
  862.         Tst.B    (A4)
  863.         Beq    Skiptro2
  864.         Move.L    A4,A0
  865.         Bra    NoSkiptro2
  866.  
  867. SendMsg        Move.L    $4.W,A6
  868.         Move.L    Message(A5),A1
  869.         Move.L    DoorPort(a5),A0
  870.         Jsr    _LVOPutMsg(A6)
  871.  
  872.         Move.L    ReplyPort(A5),A0
  873.         Jsr    _LVOWaitPort(A6)
  874.         Move.L    ReplyPort(A5),A0
  875.         Jsr    _LVOGetMsg(A6)
  876.         Rts
  877.  
  878. DpyMsg        Movem.L    D0-D7/A0-A3,-(SP)
  879.         Move.L    SP,A1
  880.         Lea    PutChar(PC),A2
  881.         Move.L    Buffer(A5),A3
  882.         Move.L    $4.W,A6
  883.         Jsr    _LVORawDoFmt(A6)
  884.         Move.L    DosBase(A5),A6
  885.         Jsr    _LVOOutput(A6)
  886.         Move.L    D0,D1
  887.         Beq.S    NofHandle
  888.         Move.L    A3,D2
  889. CountLength    Tst.B    (A3)+
  890.         Bne    CountLength
  891.         Subq.W    #1,A3
  892.         Move.L    A3,D3
  893.         Sub.L    D2,D3
  894.         Jsr    _LVOWrite(A6)
  895. NofHandle    Movem.L    (SP)+,D0-D7/A0-A3
  896.         Rts
  897. PutChar        Move.B    D0,(A3)+
  898.         Rts
  899.  
  900. Resume        Move.L    Message(A5),A0
  901.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  902.         Add.L    #MN_SIZE,A0
  903.         Move.W     #11,(A0)
  904.         Move.L    #0,2(A0)
  905.         Move.L    #0,6(A0)
  906.         Move.L    #0,10(A0)
  907.         Bsr    SendMsg
  908.         Rts
  909.  
  910. Convnumb    Moveq    #0,D0
  911.         Moveq    #0,D1
  912. CA_Zok        Move.B    (A0)+,D1
  913.         Sub.B    #'0',D1
  914.         Mulu.W    #10,D0
  915.         Add.L    D1,D0
  916.         Tst.B    (A0)
  917.         Bne    CA_Zok
  918.         Rts
  919.  
  920. SendTxt        Move.L    Message(A5),A0
  921.         Move.B    #NT_MESSAGE,LN_TYPE(A0)
  922.         Add.L    #MN_SIZE,A0
  923.         Move.W     #1,(A0)
  924.         Move.L    A1,2(A0)
  925.         Bsr    SendMsg
  926.         Rts
  927.  
  928. FmtStr        Movem.L    D0-D7/A0-A3,-(SP)
  929.         Move.L    SP,A1
  930.         Lea    PutChar(PC),A2
  931.         Move.L    Buffer(A5),A3
  932.         Move.L    $4.W,A6
  933.         Jsr    _LVORawDoFmt(A6)
  934.         Movem.L    (SP)+,D0-D7/A0-A3
  935.         Rts
  936.  
  937. ExamineCfg    Movem.L    A0-A4,-(SP)
  938.         Move.L    ConfigMem(A5),A0
  939.         Move.L    A1,A4
  940. EC_Notyet    Move.L    A4,A1
  941.         Tst.B    (A0)
  942.         Beq    EC_Notfnd
  943.         Cmp.B    #';',(A0)
  944.         Beq    EC_Halfdot
  945.         Cmpm.B    (A0)+,(A1)+
  946.         Bne    EC_Notyet
  947. EC_Contsearch    Tst.B    (A1)
  948.         Beq    EC_Fnd
  949.         Cmpm.B    (A0)+,(A1)+
  950.         Beq    EC_Contsearch
  951.         Bra    EC_Notyet
  952. EC_Notfnd    Movem.L    (SP)+,A0-A4
  953.         Moveq    #0,D0
  954.         Rts
  955. EC_Fnd        Move.L    A0,D0
  956.         Movem.L    (SP)+,A0-A4
  957.         Rts
  958. EC_Halfdot    Cmp.B    #10,(A0)+
  959.         Beq    EC_Notyet
  960.         Tst.B    (A0)
  961.         Beq    EC_Notfnd
  962.         Bra    EC_Halfdot
  963.  
  964. Nameind        dc.b    'COLORNAME "',0
  965. Flagsind    dc.b    'COLORFLAGS "',0
  966. Sizeind        dc.b    'COLORSIZE "',0
  967. Dateind        dc.b    'COLORDATE "',0
  968. Descind        dc.b    'COLORDESC "',0
  969. Lbfind        dc.b    'LINEBETWEENFILES "',0
  970. Externind    dc.b    'EXTERNALS',0
  971.  
  972. DirectoryName    dc.b    '%sData/Directory.%03.ld',0
  973. Portname    dc.b    'DD_DoorPort',0
  974. DosName        dc.b    'dos.library',0
  975. EnvName        dc.b    'ENV:DREAMUTILS',0
  976. VerName        dc.b    'DayDream:Data/Version.DAT',0
  977. Noporttxt    dc.b    '*ERROR* Not launched from DayDream! (%s not found)',10,0
  978. ConfigName    dc.b    'DreamNew.Cfg',0
  979. Helpfilename    dc.b    'DreamNewHelp',0
  980. Fileflagtxt    dc.b    'Enter Filename to Flag :',0
  981.  
  982. Banner        dc.b    10,'DreamNew V1.0 By Hydra. Loading Filelist...',10,10,0
  983.  
  984. Moreprompttxt    dc.b    'DreamNew V1.0 By Hydra. [?For help :',0
  985. Nofilefoundtxt    dc.b    'No match! <Resume>',0
  986. Dupetxt        dc.b    'File "%s" Already Flagged! <Resume>',0
  987. FRatiotxt    dc.b    'Your UL:DL FILE ratio is too low for downloading "%s"! <Resume>',0
  988. BRatiotxt    dc.b    'Your UL:DL BYTE ratio is too low for downloading "%s"! <Resume>',0
  989.  
  990. Skilipoo    dc.b    10,10,0
  991.  
  992. Skiyei        dc.b    '%s/%s (%ld)',0
  993.  
  994. Skunkki        dc.b    '%ld',0
  995.